import { ref, onMounted } from 'vue';
import { getOrderStats } from '/@/api/dashboard/orderStats';
import type { GrowCardItem } from '../data';

/**
 * 用户实名统计数据管理Hook
 */
export function useUserVerifyStats() {
  // 用户实名统计数据
  const userVerifyStats = ref({
    verify_count: 0,
    total_count: 0,
    verify_ratio_percent: 0,
    growthRate: 0,
    period: '月',
  });

  // 加载状态
  const loading = ref(false);

  // 错误信息
  const error = ref<string>('');

  /**
   * 获取用户实名统计数据
   * 调用订单统计接口，从返回数据中提取用户实名相关字段
   */
  async function fetchUserVerifyStats() {
    try {
      loading.value = true;
      error.value = '';

      console.log('开始获取用户实名统计数据...');

      const response = await getOrderStats();

      console.log('原始响应数据:', response); // 调试日志

      if (response) {
        const data = response;
        console.log('解析的result数据:', data); // 调试日志
        // 从订单统计接口返回的数据中提取用户实名相关字段
        const verify_count = data.verify_count || 0;
        const total_count = data.total_count || 0;
        const verify_ratio_percent = data.verify_ratio_percent || 0; // 使用接口返回的实名率百分比
        console.log('提取的字段值:', { verify_count, total_count, verify_ratio_percent }); // 调试日志
        userVerifyStats.value = {
          verify_count,
          total_count,
          verify_ratio_percent,
          growthRate: 0, // 暂时设为0，后续可根据需要计算增长率
          period: '月',
        };

        console.log('用户实名统计数据获取成功:', userVerifyStats.value);
      } else {
        error.value = response?.message || '获取用户实名统计数据失败';
        console.error('获取用户实名统计数据失败:', error.value);
      }
    } catch (err) {
      error.value = '网络请求失败';
      console.error('获取用户实名统计数据异常:', err);

      // 在开发环境下使用模拟数据
      if (import.meta.env.DEV) {
        console.log('使用模拟数据...');
        userVerifyStats.value = {
          verify_count: 1268,
          total_count: 2340,
          verify_ratio_percent: 54.2,
          growthRate: 8.5,
          period: '月',
        };
      }
    } finally {
      loading.value = false;
    }
  }

  /**
   * 将用户实名统计数据转换为卡片显示格式
   */
  function getUserVerifyCardData(): GrowCardItem {
    return {
      title: '已实名用户数',
      icon: 'visit-count|svg',
      value: userVerifyStats.value.verify_count,
      total: userVerifyStats.value.total_count,
      color: 'green',
      action: userVerifyStats.value.period,
      footer: `实名率: ${userVerifyStats.value.verify_ratio_percent}%`,
    };
  }

  /**
   * 刷新数据
   */
  function refresh() {
    fetchUserVerifyStats();
  }

  // 组件挂载时自动获取数据
  onMounted(() => {
    fetchUserVerifyStats();
  });

  return {
    userVerifyStats,
    loading,
    error,
    fetchUserVerifyStats,
    getUserVerifyCardData,
    refresh,
  };
}
